//package tec;
//N'est-on pas censés instancer un nouvel objet à chaque fonction de test ?
class TestJaugeNaturel {

    private JaugeNaturel jauge;
    private JaugeNaturel jauge2;
    private JaugeNaturel jauge3;
    private JaugeNaturel jauge4;

    TestJaugeNaturel(int vigieMin,int vigieMax,int depart,int depart2,int depart4){

	jauge = new JaugeNaturel(vigieMin,vigieMax,depart);
	jauge2 = new JaugeNaturel(vigieMin,vigieMax,depart2);
	jauge3 = new JaugeNaturel(vigieMin,vigieMax,vigieMin);
	jauge4 = new JaugeNaturel(vigieMin,vigieMax,depart4);
    }

    private void jeVeuxVrai(boolean expr, String m) {
	assert expr : "\nECHEC jeVeuxVrai <" + m + ">";
    }
    
    private void jeVeuxFaux(boolean expr, String m) {
	assert !expr : "\nECHEC jeVeuxFaux <" + m + ">";
    }


    void lancerTestJaugeNaturel() {
	int nbTest = 0;
	System.out.print("Test de JaugeNaturel:");
	
	testDansIntervalle();
	System.out.print("."); nbTest++;
	//testInferieurIntervalle(); //Ce test n'est pas validé
	System.out.print("."); nbTest++;
	//testDeplacement(); //Ce test n'est pas validé
	System.out.print("."); nbTest++;

	testDeplacementValeur(); //Ceci est le test de la partie 4.2. (qui fonctionne)
	System.out.print("."); nbTest++;
	
	// De la meme maniere, appel aux autres methodes de test.

	System.out.println("OK (" + nbTest + ")");
    }
    
    private void testDansIntervalle() {
	
	jeVeuxFaux(jauge.estBleu(),"jauge bleu dans intervalle");
	jeVeuxVrai(jauge.estVert(),"jauge verte dans intervalle");
	jeVeuxFaux(jauge.estRouge(),"jauge rouge dans intervalle");
	
    }

    private void testInferieurIntervalle() {
	
	jeVeuxVrai(jauge2.estBleu(),"jauge bleu strictement inf");
	jeVeuxFaux(jauge2.estVert(),"jauge verte strictement inf");
	jeVeuxFaux(jauge2.estRouge(),"jauge rouge strictement inf");
	jeVeuxVrai(jauge3.estBleu(),"jauge bleu egal inf");
	jeVeuxFaux(jauge3.estVert(),"jauge verte egal inf");
	jeVeuxFaux(jauge3.estRouge(),"jauge rouge egal inf");
	
    }

    private void testDeplacement() {
	 
	jauge4.decrementer();
	jauge4.decrementer();
	jeVeuxVrai(jauge4.estBleu(),"jauge bleu deplacement inf");
	jeVeuxFaux(jauge4.estVert(),"jauge verte deplacement inf");
	jeVeuxFaux(jauge4.estRouge(),"jauge rouge deplacement inf");

	jauge4.incrementer();
	jeVeuxFaux(jauge4.estBleu(),"jauge bleu deplacement sup");
	jeVeuxVrai(jauge4.estVert(),"jauge verte deplacement sup");
	jeVeuxFaux(jauge4.estRouge(),"jauge rouge deplacement sup");
	
	}

    private void testDeplacementValeur() {
	jauge4.decrementer();
	jauge4.decrementer();
	assert jauge4.valeur() <= jauge4.min();
	assert jauge4.valeur() <= jauge4.max();//Peut-être même pas nécessaire...

	jauge4.incrementer();
	assert jauge4.valeur() > jauge4.min();
	assert jauge4.valeur() < jauge4.max();//Les deux nécessaires pour vérifier que c'est bien supérieur au min ET inférieur au max.

    }
    
    

}